using ReportToolAPI.Services;

var builder = WebApplication.CreateBuilder(args);

// 从配置文件读取端口号，默认5000
var backendPort = builder.Configuration.GetValue<int>("ServerSettings:BackendPort", 5000);

// 配置 Kestrel 监听端口
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenAnyIP(backendPort); // 从配置文件读取端口
});

// 添加服务
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 配置 JSON 序列化为小驼峰命名（camelCase）
        options.JsonSerializerOptions.PropertyNamingPolicy = System.Text.Json.JsonNamingPolicy.CamelCase;
    });
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// 注册数据库配置服务（单例，整个应用共享一个实例）
builder.Services.AddSingleton<DatabaseConfigService>();

// 配置 CORS 允许前端访问
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowAll", policy =>
    {
        policy.AllowAnyOrigin()
              .AllowAnyMethod()
              .AllowAnyHeader();
    });
});

var app = builder.Build();

// 配置 HTTP 请求管道
app.UseSwagger();
app.UseSwaggerUI();

app.UseCors("AllowAll");
app.UseAuthorization();
app.MapControllers();

Console.WriteLine("========================================");
Console.WriteLine("报表管理系统 API 服务已启动");
Console.WriteLine($"API 地址: http://localhost:{backendPort}");
Console.WriteLine($"Swagger 文档: http://localhost:{backendPort}/swagger");
Console.WriteLine("配置文件: databases.json");
Console.WriteLine($"监听端口: {backendPort}");
Console.WriteLine("========================================");

app.Run();

